package org.jeecg.modules.oms.vo;

import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.jeecg.common.aspect.annotation.Dict;
import org.springframework.format.annotation.DateTimeFormat;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;

/**
 * 成品销售订单分页查询VO
 */
@Data
@ApiModel(value="成品销售订单分页数据模型", description="成品销售订单分页数据模型")
public class ProductSalesOrderPageVO implements Serializable {
    
    private static final long serialVersionUID = 1L;
    
    /**
     * 主键ID
     */
    @ApiModelProperty(value = "主键ID")
    private String id;
    
    /**
     * 订单编号
     */
    @ApiModelProperty(value = "订单编号")
    private String orderNo;
    
    /**
     * 客户ID
     */
    @ApiModelProperty(value = "客户ID")
    private String customerId;
    
    /**
     * 客户名称
     */
    @ApiModelProperty(value = "客户名称")
    private String customerName;
    
    /**
     * 客户省份
     */
    @ApiModelProperty(value = "客户省份")
    private String customerProvince;
    
    /**
     * 客户城市
     */
    @ApiModelProperty(value = "客户城市")
    private String customerCity;
    
    /**
     * 客户区县
     */
    @ApiModelProperty(value = "客户区县")
    private String customerDistrict;
    
    /**
     * 工程ID
     */
    @ApiModelProperty(value = "工程ID")
    private String projectId;
    
    /**
     * 工程名称
     */
    @ApiModelProperty(value = "工程名称")
    private String projectName;
    
    /**
     * 工程地区
     */
    @ApiModelProperty(value = "工程地区")
    private String projectArea;
    
    /**
     * 工程省份
     */
    @ApiModelProperty(value = "工程省份")
    private String projectProvince;
    
    /**
     * 工程城市
     */
    @ApiModelProperty(value = "工程城市")
    private String projectCity;
    
    /**
     * 工程区县
     */
    @ApiModelProperty(value = "工程区县")
    private String projectDistrict;
    
    /**
     * 下单日期
     */
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @ApiModelProperty(value = "下单日期")
    private Date orderDate;
    
    /**
     * 交付日期
     */
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @ApiModelProperty(value = "交付日期")
    private Date deliveryDate;
    
    /**
     * 销售负责人ID
     */
    @ApiModelProperty(value = "销售负责人ID")
    private String salesPersonId;
    
    /**
     * 销售负责人姓名
     */
    @ApiModelProperty(value = "销售负责人姓名")
    private String salesPersonName;
    
    /**
     * 销售额
     */
    @ApiModelProperty(value = "销售额")
    private BigDecimal totalAmount;
    
    /**
     * 销售额最小值
     */
    @ApiModelProperty(value = "销售额最小值")
    private BigDecimal minTotalAmount;
    
    /**
     * 销售额最大值
     */
    @ApiModelProperty(value = "销售额最大值")
    private BigDecimal maxTotalAmount;
    
    /**
     * 预付款
     */
    @ApiModelProperty(value = "预付款")
    private BigDecimal prepayment;
    
    /**
     * 成本汇总
     */
    @ApiModelProperty(value = "成本汇总")
    private BigDecimal totalCost;
    
    /**
     * 成本汇总最小值
     */
    @ApiModelProperty(value = "成本汇总最小值")
    private BigDecimal minTotalCost;
    
    /**
     * 成本汇总最大值
     */
    @ApiModelProperty(value = "成本汇总最大值")
    private BigDecimal maxTotalCost;
    
    /**
     * 销售利润
     */
    @ApiModelProperty(value = "销售利润")
    private BigDecimal profit;
    
    /**
     * 销售利润最小值
     */
    @ApiModelProperty(value = "销售利润最小值")
    private BigDecimal minProfit;
    
    /**
     * 销售利润最大值
     */
    @ApiModelProperty(value = "销售利润最大值")
    private BigDecimal maxProfit;
    
    /**
     * 产品系列
     */
    @ApiModelProperty(value = "产品系列")
    private String productSeries;
    
    /**
     * 订单状态
     */
    @ApiModelProperty(value = "订单状态")
    @Dict(dicCode = "order_status")
    private Integer status;
    
    /**
     * 订单描述
     */
    @ApiModelProperty(value = "订单描述")
    private String description;
    
    /**
     * 优化软件类型
     */
    @ApiModelProperty(value = "优化软件类型")
    @Dict(dicCode = "optimize_software_type")
    private Integer optimizationSoftwareType;
    
    /**
     * 创建时间
     */
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty(value = "创建时间")
    private Date createTime;
    
    /**
     * 查询开始日期
     */
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @ApiModelProperty(value = "查询开始日期")
    private Date beginDate;
    
    /**
     * 查询结束日期
     */
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @ApiModelProperty(value = "查询结束日期")
    private Date endDate;
    
    /**
     * 查询开始交付日期
     */
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @ApiModelProperty(value = "查询开始交付日期")
    private Date beginDeliveryDate;
    
    /**
     * 查询结束交付日期
     */
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @ApiModelProperty(value = "查询结束交付日期")
    private Date endDeliveryDate;
} 